<template>
  <el-dialog
    :visible="isShow"
    :title="mode === 'add' ? '新增权限点' : '编辑权限点'"
    @close="closeEvent"
  >
    <el-form :model="form" :rules="rules" ref="form" label-width="120px">
      <el-form-item label="权限名称" prop="name">
        <el-input v-model="form.name"></el-input>
      </el-form-item>
      <el-form-item label="权限标识" prop="code">
        <el-input v-model="form.code"></el-input>
      </el-form-item>
      <el-form-item label="权限描述" prop="description">
        <el-input v-model="form.description"></el-input>
      </el-form-item>
      <el-form-item label="企业可见" prop="enVisible">
        <el-switch
          v-model="form.enVisible"
          active-value="1"
          inactive-value="0"
        ></el-switch>
      </el-form-item>
      <el-form-item label-width="0">
        <div style="text-align:center">
          <el-button @click="closeEvent">取消</el-button>
          <el-button type="primary" @click="submit">确定</el-button>
        </div>
      </el-form-item>
    </el-form>
  </el-dialog>
</template>
<script>
import { sysPermissionAdd, sysPermissionPut } from '@/api/permission'
export default {
  props: {
    isShow: {
      type: Boolean,
      default: false
    },
    initList: {
      type: Array,
      default: []
    }
  },
  data () {
    return {
      mode: 'add', // add:新增  edit:编辑
      active: '100',
      initForm: {},
      form: {
        name: '', //	string	非必须
        code: '', //	string	非必须
        description: '', //	string	非必须
        enVisible: '', //	string	非必须  0与1
        type: '', //	number	非必须  菜单与路由：1   按钮权限：2
        pid: '' //string	非必须  第一层为0，后面的新增就是父级的id
      },
      rules: {
        name: [{ required: true, message: '必填', trigger: 'change' }], //	string	非必须
        code: [
          { required: true, message: '必填', trigger: 'change' },
          {
            validator: (rule, value, callback) => {
              let _bol = this.initList.some(item => {
                let _temp =
                  this.mode === 'add' ? true : this.form.id !== item.id
                return item.code === value && _temp
              })
              _bol ? callback(new Error('请不要输入重复code')) : callback()
              //   if (this.mode === 'add') {
              //     let _bol = this.initList.some(item => {
              //       return item.code === value
              //     })
              //     _bol ? callback(new Error('请不要输入重复code')) : callback()
              //   } else {
              //     let _bol = this.initList.some(item => {
              //       return item.code === value && this.form.id !== item.id
              //     })
              //     _bol ? callback(new Error('请不要输入重复code')) : callback()
              //   }
            }
          }
        ], //	string	非必须
        description: [{ required: true, message: '必填', trigger: 'change' }], //	string	非必须
        enVisible: [{ required: true, message: '必填', trigger: 'change' }] //	string	非必须  0与1
      }
    }
  },
  created () {
    this.initForm = JSON.parse(JSON.stringify(this.form))
  },
  methods: {
    closeEvent () {
      this.$emit('update:isShow', false)
      this.$refs.form.resetFields()
      //   for (let key in this.form) {
      //     this.form[key] = ''
      //   }
      this.mode = 'add'
      this.form = JSON.parse(JSON.stringify(this.initForm))
      //   this.form = {
      //     name: '123', //	string	非必须
      //     code: '', //	string	非必须
      //     description: '', //	string	非必须
      //     enVisible: '', //	string	非必须  0与1
      //     type: '', //	number	非必须  菜单与路由：1   按钮权限：2
      //     pid: '' //string	非必须  第一层为0，后面的新增就是父级的id
      //   }
      //   Object.keys(this.form).forEach(item => {
      //     this.form[item] = ''
      //   })
    },
    setFormValue (type, pid) {
      this.form.type = type
      this.form.pid = pid
    },
    // 确定点击事件
    submit () {
      this.$refs.form.validate(async result => {
        if (result) {
          if (this.mode === 'add') {
            await sysPermissionAdd(this.form)
            this.$message.success('新增权限点成功')
          } else {
            await sysPermissionPut(this.form)
            this.$message.success('编辑权限点成功')
          }
          this.closeEvent()
          this.$parent.getData()
        }
      })
    }
  }
}
</script>
<<<<<<< HEAD ======= >>>>>>> 0025b480ac8a7ee60a71df968587de725dfd8639
<style></style>
